#include <random>
#include <iostream>
#include <atomic>
#include <iomanip>
#include <sstream>

int main()
{
    std::random_device rd;
    // std::cout << rd() << std::endl;
    // 给梅森特算法一个种子。
    std::mt19937_64 generator(rd());
    // 给它种一个种子。
    std::uniform_int_distribution<int> distribution(0,255);
    // std::cout << std::setw(2) << std::setfill('0') << std::hex <<  distribution(generator) << std::endl;
    std::stringstream ss;
    for(int i = 0;i < 8;++i)
    {
        // std::cout << std::setw(2) << std::setfill('0') << std::hex << distribution(generator) << std::endl;
        ss << std::setw(2) << std::setfill('0') << std::hex <<  distribution(generator);
        if(i == 3 || i == 5 || i == 7)
        {
            ss << "-";
        }
    } 
    static std::atomic<size_t> count(1);
    size_t num = count.fetch_add(1);
    for(int i = 7;i >= 0;--i)
    {
        // 向右移动一个字节。
        ss << std::setw(2) << std::setfill('0') << std::hex << ((num >> (i * 8)) & 0xff);
        if(i == 6)
        {
            // 844模式。
            ss << "-";
        }
    }
    // static std::atomic<int> count(1);
    // int num = count.fetch_add(1);
    // for(int i = 7;i >= 0;--i)
    // {
    //     // 向右移动一个字节。
    //     // 4 * 8 = 32，int，所以不移动。
    //     ss << std::setw(2) << std::setfill('0') << std::hex << ((num >> (i * 8)) & 0xff);
    //     if((num >> (i * 8)) == 1)
    //     {
    //         std::cout << i << std::endl;
    //     }
    //     if(i == 6)
    //     {
    //         // 844模式。
    //         ss << "-";
    //     }
    // }
    std::cout << ss.str() << std::endl;

    return 0;
}